home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / Filezilla Server / FileZilla_Server-0_9_41.exe / source / AsyncGssSocketLayer.h < prev    next >
C/C++ Source or Header  |  2011-11-06  |  5KB  |  137 lines

  1. // GSSAsyncSocksifiedSocket.h: interface for the CAsyncGssSocketLayer CAsyncSocketEx.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. // Part of this code is copyright 2001 Massachusetts Institute of Technology
  5.  
  6. #if !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
  7. #define ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_
  8.  
  9. #if _MSC_VER > 1000
  10. #pragma once
  11. #endif // _MSC_VER > 1000
  12.  
  13. // **************************************************************************************
  14. // File:            globals.h 
  15. // By:              Arthur David Leather
  16. // Created:         08/02/99
  17. // Copyright        @1999 Massachusetts Institute of Technology - All rights reserved.
  18. // Description:     H file for globals.cpp. Contains variables and functions 
  19. //                  for SoFTP
  20. //
  21. // History:
  22. //
  23. // MM/DD/YY   Inits   Description of Change
  24. // 08/02/99   ADL     Original
  25. // **************************************************************************************
  26.  
  27.  
  28. //#include "tlhelp32.h"
  29. //#include <winsock.h>
  30. #include "AsyncSocketExLayer.h"
  31.  
  32. #define GSS_INFO                0
  33. #define GSS_ERROR                1
  34. #define GSS_SHUTDOWN_COMPLETE    2
  35. #define GSS_COMMAND                3
  36. #define GSS_REPLY                4
  37. #define GSS_AUTHFAILED            5
  38. #define GSS_AUTHCOMPLETE        6
  39.  
  40. // Defines
  41. #define GFTPDLL                             _T("FzGss.dll")
  42. #define GSSAPI_AUTHENTICATION_SUCCEEDED     1
  43.  
  44. class CGssHelperWindow;
  45. class CAsyncGssSocketLayer : public CAsyncSocketExLayer
  46. {
  47. public:
  48.     CAsyncGssSocketLayer();
  49.     virtual ~CAsyncGssSocketLayer();
  50.  
  51.     BOOL InitTransferChannel(CAsyncGssSocketLayer *pSocket);
  52.  
  53.     BOOL InitGSS(BOOL bSpawned = FALSE, BOOL promptPassword = FALSE);
  54.     int GetClientAuth(const char* pHost);
  55.     int ProcessCommand(const char *command, const char *args, char *sendme);
  56.     int ProcessCommand(const char *command, const char *args1, const char *args2, char *sendme);
  57.     BOOL AuthSuccessful() const;
  58.     void SetAuthState(int i) {m_gotAuth = i;}
  59.     void SetTransfer(BOOL flag) {m_transfer = flag;}
  60.     BOOL ShutDownComplete();
  61.     BOOL GetUserFromKrbTicket(char *buffer); //Should be 256 chars long
  62.  
  63. protected:
  64.     void ReceiveReply();
  65.     static int CALLBACK Callback(void *pData, int nParam1, int nParam2, int nParam3);
  66.     virtual void Close();
  67.     virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
  68.     virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
  69.     virtual BOOL ShutDown(int nHow /*=sends*/);
  70.  
  71.     virtual void OnReceive(int nErrorCode);
  72.     virtual void OnSend(int nErrorCode);
  73.     virtual void OnClose(int nErrorCode);
  74.     
  75.     char *m_pSendBuffer;
  76.     int m_nSendBufferLen;
  77.     int m_nSendBufferSize;
  78.  
  79.     char *m_pReceiveBuffer;
  80.     unsigned int m_nReceiveBufferLen;
  81.     unsigned int m_nReceiveBufferSize;
  82.     char *m_pDecryptedReceiveBuffer;
  83.     int m_nDecryptedReceiveBufferLen;
  84.     int m_nDecryptedReceiveBufferSize;
  85.  
  86.     char m_tmpBuffer[1024*32]; //32KB buffer for temporary data
  87.  
  88.     BOOL m_bInitialized;
  89.  
  90.     BOOL m_nAwaitingReply; //Used by client authentication, set to true if waiting for a reply from the server
  91.     BOOL m_transfer;
  92.  
  93.     int m_nShutDown;
  94.  
  95.     BOOL LoadGSSLibrary();
  96.     BOOL UnLoadGSSLibrary();
  97.     
  98.     HINSTANCE m_hGSS_API;
  99.     void **m_pData;
  100.     BOOL m_bUseGSS;
  101.     int m_gotAuth;  // authorization type
  102.  
  103.     // GSS-API
  104.     typedef int (* t_FzGss_ProcessCommand)(void* m_pData, const char* command, char* args, char* sendme);
  105.     typedef int (* t_FzGss_DecryptMessage)(void*, char *msgStr, char* sendme);
  106.     typedef int (* t_FzGss_EncryptMessage)(void*, char *msgStr, char* sendme);
  107.     typedef unsigned long (* t_FzGss_EncryptData)(void*, char *chunk, int length, char* sendme);
  108.     typedef unsigned long (* t_FzGss_DecryptData)(void *pData, char *chunk, int length, char* send);
  109.     typedef BOOL (* t_FzGss_InitGSS)(void*, int (CALLBACK *)(void *, int, int, int), void *, int);
  110.     typedef BOOL (* t_FzGss_KillGSS)(void*);
  111.     typedef int  (* t_FzGss_DoClientAuth)(void *pData, char *hostname, const struct sockaddr *myaddr, const struct sockaddr *hisaddr, char protLevel, int gssBufferSize);
  112.     typedef int  (* t_FzGss_ProcessReply)(void *pData, char *reply);
  113.     typedef int  (* t_FzGss_GetUserFromKrbTicket)(void *pData, char *buffer);
  114.  
  115.     t_FzGss_ProcessCommand pFzGss_ProcessCommand;
  116.     t_FzGss_DecryptMessage pFzGss_DecryptMessage;
  117.     t_FzGss_EncryptMessage pFzGss_EncryptMessage;
  118.     t_FzGss_EncryptData pFzGss_EncryptData;
  119.     t_FzGss_DecryptData pFzGss_DecryptData;
  120.     t_FzGss_InitGSS pFzGss_InitGSS;
  121.     t_FzGss_KillGSS pFzGss_KillGSS;
  122.     t_FzGss_DoClientAuth pFzGss_DoClientAuth;
  123.     t_FzGss_ProcessReply pFzGss_ProcessReply;
  124.     t_FzGss_GetUserFromKrbTicket pFzGss_GetUserFromKrbTicket;
  125.  
  126.     SOCKADDR m_myAddr;
  127.     SOCKADDR m_hisAddr;
  128.  
  129.     BOOL KillGSSData();
  130.  
  131. private:
  132.     int m_nGssNetworkError;
  133. };
  134.  
  135.  
  136. #endif // !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
  137.